namespace PropertyExpression.Common
{
    public class Type<T> { }
    public class Type<T1, T2> { }
    public class Type<T1, T2, T3> { }
    public class Type<T1, T2, T3, T4> { }
    public class Type<T1, T2, T3, T4, T5> { }
    public class Type<T1, T2, T3, T4, T5, T6> { }
    public class Type<T1, T2, T3, T4, T5, T6, T7> { }
    public class Type<T1, T2, T3, T4, T5, T6, T7, T8> { }
    public class Type<T1, T2, T3, T4, T5, T6, T7, T8, T9> { }
    public class Type<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> { }
    public class Type<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> { }
    public class Type<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> { }
    public class Type<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> { }
    public class Type<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> { }
    public class Type<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> { }
    public class Type<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> { }

    //                var @join = string.Join(@"
    //", Enumerable.Range(1, 16).Select(
    //                x => "public class Type<"
    //                    + string.Join(", ", Enumerable.Range(1, x).Select(_ => "T" + _).ToArray())
    //                    + ">{}").ToArray());
}